package com.itheima.service.impl;


import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.Service.CheckGropService;
import com.itheima.domain.CheckGroup;
import com.itheima.domain.CheckItem;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.mapper.CheckGropMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import javax.swing.text.GapContent;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service(interfaceClass = CheckGropService.class)
@Transactional
public class CheckGropServiceImpl implements CheckGropService {


    @Autowired
    private CheckGropMapper checkGropMapper;


    //添加项目组的方法
    @Override
    public void addCheckGrop(CheckGroup checkGroup, Integer[] checkitemIds) {


        //添加检测组的基本信息
        checkGropMapper.addCheckGrop(checkGroup);
        Integer id = checkGroup.getId();
        //添加检测组和检测项中间表信息
        if(checkitemIds!=null&&checkitemIds.length>0){
            //如果有数据,遍历数组，然后存入map集合
            Map<String,Integer> map=new HashMap<String,Integer>();
            for(Integer integer:checkitemIds){
                map.put("checkitem_id",integer);
                map.put("checkgroup_id",id);
                checkGropMapper.addCheckGropAndCheckItem(map);
            }


        }

    }


    //分页展示检测组的内容
    @Override
    public PageResult findPage(QueryPageBean queryPageBean) {

        //获取当前也的数据
        Integer currentPage = queryPageBean.getCurrentPage();
        //每页要展示的条数
        Integer pageSize = queryPageBean.getPageSize();
        //搜索了的内容
        String queryString = queryPageBean.getQueryString();

        //使用分页助手
        PageHelper.startPage(currentPage,pageSize);

        //获取查询内容
       List<CheckGroup> list=checkGropMapper.findPage(queryString);

        PageInfo<CheckGroup> pg = new PageInfo<>(list);
        long total = pg.getTotal();

        PageResult pageResult = new PageResult(total, list);


        return pageResult;
    }


    //编辑检测组回显数据
    @Override
    public CheckGroup findByIdToEdit(int row) {


        CheckGroup checkGroup=checkGropMapper.findByIdToEdit(row);
        List<CheckItem> checkItems = checkGroup.getCheckItems();
        return checkGroup;
    }


    //获取回显的检测项复选框
    @Override
    public List<Integer> findCheckBox(int row) {
        List<Integer> list=checkGropMapper.findCheckBox(row);
        return list;
    }



    //编辑更新检测组的方法
    @Override
    public void editCheckGroup(CheckGroup checkGroup, Integer[] checkitemIds) {


            //更新检测组的时候，首先删除中间表的相关信息
            checkGropMapper.deleteCheckGroup_CheckItem(checkGroup.getId());


            //更新检测组的内容
            checkGropMapper.editCheckGroup(checkGroup);

            //使用map集合的方式
            Map<String,Integer> map=new HashMap<String,Integer>();

            for(Integer checkitemId:checkitemIds){
                map.put("checkgroup_id",checkGroup.getId());
                map.put("checkitem_id",checkitemId);
                //更新中间表的内容
                checkGropMapper.editCheckGroupAndCheckItem(map);

            }


















    }


    //删除对应id的检测组
    @Override
    public void deleteCheckGrop(int row) {
        //第一步要删除中间表
        checkGropMapper.deleteCheckGropAndCheckItem(row);

        //第二步是删除检测组
        checkGropMapper.deleteCheckGrop(row);

    }


}
